package com.ocm.core.service;

import java.util.List;

import javax.jcr.Node;
import javax.jcr.Property;
import javax.jcr.Session;

import com.ocm.core.domain.PropertyDefinition;
import com.ocm.core.exception.OCMException;
import com.ocm.core.model.ReferenceValue;

public interface AssociationTypeService {

   void processReferenceValue(Node instanceClass, String propertyName, ReferenceValue referenceValue) throws OCMException;

   Object processClassInstance(Session session, Object propertyValue, long classDef, List<PropertyDefinition> filterProperties, int maxItems) throws OCMException;

   Object getPropertyValue(Property property) throws OCMException;

   Object getPropertyObject(Property property) throws OCMException;

   void setJCRService(JCRService jcrService);

   boolean support(Property property) throws OCMException;

   void removeReference(Property property, Node removeNode) throws OCMException;
}
